/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ssga.validator;

import java.awt.Color;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import javax.swing.JLabel;
import javax.swing.JTextField;

/**
 * clase que se encarga de validar los tipos de datos
 * @author David
 */
public class Validator {

    //Formato de la fecha a ingresar
    private static String dateFmt = "dd/MM/yyyy";

    /**
     * Metodo que valida que el string que ingresas sea un numero entero
     * @param str
     * @return boolean
     */
    private boolean isNumber(String str) {
        try {
            str.replace(" ", "");
            Integer.parseInt(str);
            return true;
        } catch (NumberFormatException ne) {
            System.out.println("Error en la conversion del numero----> " + str);
            return false;
        }
    }

    /**
     * Metodo que valida que el el campo texto no este vacio
     * @param str
     * @return boolean
     */
    private boolean isString(String str) {
        if (str.replace(" ", "").length() > 0) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * Metodo que valida que el el campo texto no este vacio
     * @param str
     * @return boolean
     */
    public boolean isEquals(int cd1, int cd2, JLabel lbl) {

        if (cd1 != cd2) {
            lbl.setForeground(Color.getHSBColor(0, 0, 0));
            return true;
        } else {
            lbl.setForeground(Color.red);
            return false;
        }
    }

    /**
     * Metodo que valida si una fecha esta en el formato correcto
     * @param strDate
     * @return boolean
     */
    private boolean isDate(String strDate) {
        SimpleDateFormat fmt = new SimpleDateFormat(dateFmt);
        java.util.Date f = null;
        try {
            strDate.replace(" ", "");
            f = fmt.parse(strDate);

            if (fmt.format(f).equals(strDate)) {
                return true;
            } else {
                return false;
            }
        } catch (ParseException ex) {
            System.out.println("Error en la conversion de la fecha----> " + ex);
            System.out.println("Error en la conversion de la fecha---->" + strDate);
            return false;
        }
    }

    /**
     * Metodo que se recarga de Validar los datos 1- Num / 2- Texto / 3- Date
     * @param error
     * @param lbl
     * @param txt
     * @param type
     * @return Boolean
     */
    public boolean validate(JLabel lbl, JTextField txt, int type) {

        switch (type) {

            case 1://Numero
                if (isNumber(txt.getText())) {
                    lbl.setForeground(Color.getHSBColor(0, 0, 0));
                    return true;
                } else {
                    lbl.setForeground(Color.red);
                    return false;
                }

            case 2: //Texto
                if (isString(txt.getText())) {
                    lbl.setForeground(Color.getHSBColor(0, 0, 0));
                    return true;
                } else {
                    lbl.setForeground(Color.red);
                    return false;
                }

            case 3:// Fechas
                if (isDate(txt.getText())) {
                    lbl.setForeground(Color.getHSBColor(0, 0, 0));
                    return true;
                } else {
                    lbl.setForeground(Color.red);
                    return false;
                }
            default:
                return false;
        }
    }
}